Описание
Семейство Errors содержит все сохраненные объекты
Error, каждый из которых описывает конкретную ошибку при операциях с
объектами доступа к данным (DAO).
Замечания
Любая операция с участием объектов доступа к данным может
привести к возникновению одной или нескольких ошибок. При возникновении каждой
ошибки один или несколько объектов Error помещаются в семейство
Errors объекта DBEngine. При возникновении ошибки в другой
операции с объектами доступа к данным семейство Errors очищается и в него
помещается новый объект Error. Объект с максимальным номером в семействе
Errors (DBEngine.Errors.Count - 1) соответствует ошибке, возвращаемой
объектом Err Microsoft Visual Basic для приложений
(VBA).
Операции DAO, в которых ошибки не возникают, не
оказывают влияния на семейство Errors.
Для семейства Errors не
выполняется операция добавления элементов, как это имеет место в других
семействах, поэтому семейство Errors не поддерживает методы Append
и Delete.
Набор объектов Error в семействе Errors
описывает одну ошибку. Первый объект Error представляет ошибку низшего
уровня, второй объект ошибку следующего уровня и т.д. Например, если ошибка
ODBC возникает при попытке открыть объект Recordset, то первый
объект Error содержит ошибку ODBC низшего уровня; следующие
объекты-ошибки содержат ошибки ODBC, возвращаемые со следующих уровней
программного обеспечения ODBC. В подобном случае диспетчер драйвера
ODBC и, возможно, сам драйвер возвращают отдельные объекты Error.
Последний объект Error содержит ошибку DAO, указывающую
невозможность открытия объекта.
Просмотр сведений о конкретных ошибках в
семействе Errors позволяет более точно определить в программах обработки
ошибок причину и источник каждой ошибки и принять соответствующие меры для
исправления ситуации.
Ключевое слово New было использовано при
создании объекта, ставшего источником ошибки до своего добавления в семейство
Errors, то семейство Errors объекта DBEngine не будет
содержать ошибку, соответствующую этому объекту, поскольку еще не установлена
связь этого объекта с объектом DBEngine. Однако сведения об этой ошибке
будут доступны в объекте Err VBA.
Пример
Следующая программа создает ошибку, перехватывает ее и отображает
свойства Description, Number, Source, HelpContext и
HelpFile результирующего объекта Error.
Sub DescriptionX()
Dim dbsTest As Database
On Error GoTo ОбработчикОшибок
' Преднамеренно генерирует ошибку.
Set dbsTest = OpenDatabase("NoDatabase")
Exit Sub
ОбработчикОшибок:
Dim strError As String
Dim errLoop As Error
' Отображает семейство Errors и отображает свойства
' каждого объекта Error.
For Each errLoop In Errors
With errLoop
strError = "Ошибка #" & .Number & vbCr
strError = strError & " " & .Description & vbCr
strError = strError & " (Источник: " & .Source & ")" & vbCr
strError = strError & "Нажмите F1 для вызова раздела " & .HelpContext & vbCr
strError = strError & " из файла " & .HelpFile & "."
End With
MsgBox strError
Next
Resume Next
End Sub